package negocio;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;

import daos.AdministradorDAO;
import daos.ColorDAO;
import daos.MarcaDAO;
import daos.ModeloDAO;
import daos.PersonaDAO;
import daos.TipoSubastaDAO;
import daos.UsuarioDAO;
import datos.Administrador;
import datos.Color;
import datos.Marca;
import datos.Modelo;
import datos.TipoSubasta;
import datos.Usuario;

/**
 * Session Bean implementation class EJBAdministrador
 */
@Stateless
@LocalBean
public class EJBAdministrador implements EJBAdministradorRemote {
	
	@EJB
    AdministradorDAO administradorDAO;
	@EJB
    PersonaDAO personaDAO;
	@EJB
	ColorDAO colorDAO;
	@EJB
	MarcaDAO marcaDAO;
	@EJB
	ModeloDAO modeloDAO;
	@EJB
	TipoSubastaDAO tipoSubastaDAO;
	@EJB
	UsuarioDAO usuarioDAO;
	
	
    public EJBAdministrador() {
        // TODO Auto-generated constructor stub
    }
    
    public boolean IniciarSesion(String cedula, String pass)
    {
    	boolean existe=false;
    	Administrador administrador=administradorDAO.findByKey(cedula);
    	if (administrador!=null) {
			if (administrador.getPassword().equals(pass)) {
				existe=true;
			}   		
		}
    	
    	return existe;
    }
    
    public boolean crearMarca(String nombre, String descripcion) 
	{
    	boolean creado=false;
		Marca marca=new Marca();
		marca.setNombre(nombre);
		marca.setDescripcion(descripcion);
		
		//se verifica que no exista otra marca con el mismo nombre
		
		List<Marca>marcas=marcaDAO.getAll();
		boolean existe=false;
		
		for (int i = 0; i < marcas.size(); i++) {
			if (marcas.get(i).getNombre().equals(nombre)) {
				existe=true;
				break;
			}
		}
		
		
		if (!existe) {
			marcaDAO.insert(marca);
			creado=true;
		}
		return creado;
	}


	public boolean crearModelo(String nombre, String descripcion, String nombreMarca) {
		
		Marca marca=marcaDAO.findByKey(nombreMarca);
		
		boolean creado=false;
		Modelo modelo=new Modelo();
		modelo.setDescripcion(descripcion);
		modelo.setMarca(marca);
		modelo.setNombre(nombre);
		
		//se verifica que exista la marca, si no existe se agrega
		//se verifica que no exista o tro modelo con el mismo nombre
		
			List<Modelo>modelos;
			modelos=modeloDAO.getAll();
			
			boolean existeModelo=false;
			
			for (int i = 0; i < modelos.size(); i++) {
				if (modelos.get(i).getNombre().equals(nombre)) {
					existeModelo=true;
					break;
				}
			}
			
			if (!existeModelo) {
				
				if (marcaDAO.findByKey(marca.getNombre())==null) {
					marcaDAO.insert(marca);
				}
				
				modeloDAO.insert(modelo);
				creado=true;
			}
			
		return creado;
	}

	public boolean crearColor(String nombre) {
		
		boolean creado=false;
		Color color=new Color();
		color.setColor(nombre);
		
		//se verifica que no exista otro color con la misma identificacion
		
		List<Color>colors=colorDAO.getAll();
		boolean existeColor=false;
		for (int i = 0; i < colors.size(); i++) {
			if (colors.get(i).getColor().equals(nombre)) {
				existeColor=true;
				break;
			}
		}
		
		if (!existeColor) {
			colorDAO.insert(color);
			creado=true;
		}
		return creado;
	}
	
	public boolean crearTipoSubasta(String descripcion) {
		
		boolean creado=false;
		boolean existe=false;
		TipoSubasta tipoSubasta= new TipoSubasta();
		tipoSubasta.setDescripcion(descripcion);
		
		//se verifica que no exista un tipo de subasta con la misma identificacion
		List<TipoSubasta>tipos=tipoSubastaDAO.getAll();
		for (int i = 0; i < tipos.size(); i++) {
			if (tipos.get(i).getDescripcion().equals(descripcion)) {
				existe=true;
				break;
			}
		}
		
		if (!existe) {
			tipoSubastaDAO.insert(tipoSubasta);
			creado=true;
		}
		return creado;
	}
	
	public List<String> getNombreMarcas() {
		
		return marcaDAO.NombresMarca();
	}

	@Override
	public List<String> getListaCedulaUsuarios() {
		// TODO Auto-generated method stub
		return usuarioDAO.getCedulaUsuarios();
	}
	
	@Override
	public boolean EliminarUsuario(String cedula) {
		
		boolean eliminado=false;
		Usuario usuario=usuarioDAO.findByKey(cedula);
		if (usuario!=null) {
			usuarioDAO.remove(usuario);	
			eliminado=true;
		}
		return eliminado;
		
	}

}
